﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Windows.Storage.Streams
{
    public static class DataReaderExtension
    {
        public static async Task<string> Read(this DataReader reader)
        {
            // 读取消息头
            var countSize = await reader.LoadAsync(sizeof(uint));
            if (countSize != sizeof(uint))
            {
                // 数据格式不正确
                return null;
            }
            // 读取前四个字节中存的数字值（真实消息的数据长度）
            var contentSize = reader.ReadUInt32();

            // 往缓冲区加载消息数据
            var realSize = await reader.LoadAsync(contentSize);
            if (realSize != contentSize)
            {
                // 数据格式不正确
                return null;
            }

            // 读取真实消息（返回真实消息）
            var content = reader.ReadString(realSize);
            return content;
        }
    }
}
